#include<vector>
#include<iostream>
#include<cstdio>
#define N 10000
using namespace std;
int m;
void print(int *point){
	printf("%p\n",point);
	for(int i=0;i<m;i++){
		cout<<point[i]<<' ';
	}
	cout<<endl;
}
void digui(int count,int* flag){//所有的flag全是同一个flag地址。会导致出错
	if(count==0){
		while(count<m){
			for(int i=0;i<m;i++){
				if(flag[i]==m-count){
					cout<<i+1<<' ';
					count++;
					break;
				}					
			}
		}
		cout<<endl;
		return ;
	}
	else
		for(int i=1;i<=m;i++){
			if(flag[i-1]==0){
				flag[i-1]=count;
				digui(count-1,flag);
				flag[i-1]=0;
			}
		}
}

int main(){
	cin>>m;
	int flag[N]={0};
	digui(m,flag);
}